package com.fqy.gmall.item.all.controller;

import com.alibaba.fastjson.JSONObject;
import com.fqy.gmall.common.result.Result;
import com.fqy.gmall.product.client.ProductFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ResponseBody;
import org.thymeleaf.context.Context;
import org.thymeleaf.TemplateEngine;

import javax.servlet.http.HttpServletRequest;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

/**
 * User: fqy
 * Date: 2021/9/29
 * Time: 0:17
 * Describe: 首页
 *          首页静态化 :
 *          首页数据渲染实现方式：
 * 					一种：直接查询数据，将数据并放入缓存！
 * 					一种：使用nginx直接做页面静态化！
 */
@Controller
public class IndexController {

    @Autowired
    private ProductFeignClient productFeignClient;

    @Autowired
    private TemplateEngine templateEngine;

    //  www.gmall.com/ www.gmall.com/index.html
    @GetMapping({"/","index.html"})
    public String index(HttpServletRequest request){
        Result result = productFeignClient.getBaseCategoryList();
        //  后台需要存储${list}
        request.setAttribute("list",result.getData());
        return "index/index";
    }
    //方式二 ：返回值 List<JSONObject>
//    @GetMapping({"/","index.html"})
//    public String index(Model model){
//        //  获取到数据
//        List<JSONObject> baseCategoryList = productFeignClient.getBaseCategoryList();
//        //  后台需要存储${list}
//        model.addAttribute("list",baseCategoryList);
//        return "index/index";
//    }

    //  首页静态化 : 生产一个静态化页面！
    @GetMapping("createIndex")
    @ResponseBody
    public Result createIndex(){
        //  获取后台存储的数据
        //  先获取到分类数据：
        Result result = productFeignClient.getBaseCategoryList();
//        List<JSONObject> baseCategoryList = productFeignClient.getBaseCategoryList();
        //  设置模板显示的内容
        Context context = new Context();
        context.setVariable("list",result.getData());
//        context.setVariable("list",baseCategoryList);
        //  定义文件输入位置
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter("D:\\Log\\index.html");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //  调用process();方法创建模板
        //  模板引擎 第一个参数模板名，第二个内容, 第三个参数 输入Writer
        templateEngine.process("index/index.html",context,fileWriter);
        return Result.ok();
    }

}
